<?php

///////////////////////////////////////////////////////////////////
/// 说明：
///     该类是关系数据库保存键值数据的工具类，放心使用
/// ///////////////////////////////////////////////////////////////

namespace App\Models\CoreModel;

use Illuminate\Database\Eloquent\Model;

class KVModel extends Model
{
    protected $table = 'core_kv';
    protected $fillable = ['keys', 'values', 'other'];

    const KEYS = ['eg'];

    /**
     * 查询多个键的数据
     * @param $keys_arr
     * @return array
     */
    public static function  queryKeysV($keys_arr){
        $data = self::whereIn('keys', $keys_arr)->get();
        $r = [];
        foreach ($data as $item){
            if($item->keys){
                $r[$item->keys] = unserialize($item->values);
            }
        }
        return $r;
    }

    /**
     * 同时保存（设置）多个键值数据
     * @param $keys_arr
     * @param $data
     */
    public static function saveKeysV($keys_arr, $data){
        foreach ($keys_arr as $i => $v){
            $val = serialize($data[$v]);
            if(array_key_exists($v, $data) && !self::where('keys', $v)->update(['values'=> $val])){
                self::create([
                    'keys' => $v,
                    'values'=> $val
                ]);
            }
        }
    }

    /**
     * 查询 1 个键的数据
     * @param $key
     * @return null
     */
    public static function  queryKV($key){
        $data = self::where('keys', $key)->first();
        if(!empty($data)){
            return unserialize($data->values);
        }
        return null;
    }

    /**
     * 保存（设置）1 个键值数据
     * @param $keys_arr
     * @param $data
     */
    public static function saveKV($key, $value){
        $val = serialize($value);
        if(!self::where('keys', $key)->update(['values'=> $val])){
            self::create([
                'keys' => $key,
                'values'=> $val
            ]);
        }
    }

//  end
}
